<?php
/**
 * Created by PhpStorm.
 * User: jiangxiaobo
 * Date: 2019/11/18 0018
 * Time: 21:20
 */
namespace bootstrap\lib;

use config\ViewConfig;

class View
{
    /**
     * 模板输出变量
     * @var array $tVar
     * @access protected
     */
    protected $tVar = [];

    /**
     * 模板输出内容
     * @var string $content
     * @access protected
     */
    protected $content = "";

    public function __construct()
    {

    }

    /**
     * 模板变量赋值
     * @access public
     * @param string $name
     * @param string $value
     * @return mixed
     */
    public function assign($name, $value){
        if(is_array($name)) {
            $this->tVar = array_merge($this->tVar,$name);
        }else {
            $this->tVar[$name] = $value;
        }
        return $this;
    }

    /**
     * 解析和获取模板内容 用于输出
     * @access public
     * @param string $templateFile 模板文件名
     * @param string $viewPath 模板文件所在根路径
     * @return string
     * @example fetch(ROOT_PATH.'resources'.DS.'views'.DS)
     */
    public function fetch($templateFile='', $viewPath='') {
        if(empty($viewPath))
        {
            $viewPath = ViewConfig::get('VIEW_PATH');
        }
        // 页面缓存
        ob_start();
        // ob_implicit_flush(true)，这个函数强制每当有输出的时候，即刻把输出发送到浏览器
        ob_implicit_flush(0);
        // 模板阵列变量分解成为独立变量
        extract($this->tVar, EXTR_OVERWRITE);
        // 直接载入HTML模板
        include $viewPath.$templateFile.ViewConfig::get('VIEW_EXT');
        // 获取并清空缓存
        $this->content = ob_get_clean();
        // 输出模板文件
        return $this->content;
    }
}